---
id: 655a1479ba7e7c0ee6c1acdd
title: Крок 12
challengeType: 20
dashedName: step-12
---

# --description--

Тепер ви визначите метод `_insert`, який є допоміжною функцією та виконує фактичну вставку. Цей метод є рекурсивним, тобто він викликає сам себе, щоб пройти по дереву, доки не знайде відповідне місце для нового вузла.

Визначте метод `_insert` з параметрами `self`, `node` та `key`.

# --hints--

Визначте метод `_insert` в межах класу `BinarySearchTree`. Не забудьте використати `pass`.

```js
({ test: () => assert.match(code, /^\s{4}def\s+_insert\s*\([^(]*\)\s*:/m) })
```

Метод `_insert` має приймати три параметри: `self`, `node` та `key`.

```js
({ test: () => assert.match(code, /^\s{4}def\s+_insert\s*\(\s*self\s*,\s*node\s*,\s*key\s*\)\s*:/m) })
```

# --seed--

## --seed-contents--

```py
class TreeNode:
    def __init__(self, key):
        self.key = key
        self.left = None
        self.right = None

class BinarySearchTree:
    def __init__(self):
        self.root = None

    def insert(self,key):
        self.root = self._insert(self.root, key)

--fcc-editable-region--

--fcc-editable-region--
```
